package com.kang.controller;

import com.kang.service.UseRelevancyService;
import com.kang.util.WebResponse;
import com.kang.vo.ChatUserIdVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


@RestController
@Api(tags = "查询私聊接口")
@RequestMapping("/user/login")
@Slf4j
public class UseRelevancyController {

    @Autowired
    private UseRelevancyService useRelevancyService;

    @ApiOperation("查询私聊列表")
    @GetMapping("getPrivateChat")
    public WebResponse getPrivateChat(Integer id) {
        try {
            return WebResponse.resSuccess("查询私聊列表成功",useRelevancyService.getPrivateChat(id));
        } catch (Exception ex) {
            log.error("查询私聊列表失败",ex);
            return WebResponse.resFail("查询私聊列表失败",null);
        }
    }

    @ApiOperation("分页查询聊天记录")
    @GetMapping("getChatRecorde")
    public WebResponse getChatRecorde(ChatUserIdVo chatUserIdVo) {
        try {
            return WebResponse.resSuccess("分页查询聊天记录成功",useRelevancyService.getChatRecorde(chatUserIdVo));
        } catch (Exception ex) {
            log.error("分页查询聊天记录失败",ex);
            return WebResponse.resFail("分页查询聊天记录失败",null);
        }
    }

    @ApiOperation("删除私信列表用户")
    @PostMapping("deleteChatUser")
    public WebResponse deleteChatUser(@RequestBody ChatUserIdVo chatUserIdVo) {
        try {
            return WebResponse.resSuccess("删除私信列表用户成功",useRelevancyService.deleteChatUser(chatUserIdVo));
        } catch (Exception ex) {
            log.error("删除私信列表用户失败",ex);
            return WebResponse.resFail("删除私信列表用户失败",null);
        }
    }

    /**
     * TODO 私聊时相互加入好友私聊表中
     * 1.redis加一层缓存
     * 2.私聊时单方面存入数据库私聊列表 并存入redis缓存
     * 4.当发送消息时，redis判断接收者有没有这个私聊用户，没有的话加入数据库并存入缓存
     * 5.在socket中判断缓存是否存在，不存在时讲这个用户存入私聊列表和redis中
     */
    /**
     * 点击私聊时，加入两个的用户列表信息
     */
    @ApiOperation("点击私聊时，加入两个的用户列表信息")
    @GetMapping("insertUserRelevancy")
    public WebResponse insertUserRelevancy(Integer userId) {
        try {
            return WebResponse.resSuccess("加入两个的用户列表信息成功",useRelevancyService.insertUserRelevancy(userId));
        } catch (Exception ex) {
            log.error("加入两个的用户列表信息失败",ex);
            return WebResponse.resFail("加入两个的用户列表信息失败",null);
        }
    }
}
